/*
 * Copyright 2021 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.android.microdroid.biologic;

/** {@hide} */
interface IBiologicService {
    const int SERVICE_PORT = 5678;

    /* add two integers. */
    int addInteger(int a, int b);

    /* read a system property. */
    String readProperty(String prop);

    /* get the VM's stable secret, this is _only_ done for testing. */
    byte[] insecurelyExposeSealingCdi();

    /* get the VM's attestation secret, this is _only_ done for testing. */
    byte[] insecurelyExposeAttestationCdi();

    /* get the VM's boot certificate chain (BCC). */
    byte[] getBcc();

    /**
     * @brief 写入人脸特征值
     * 输入: 人脸特征字符串、人脸ID
     *      人脸ID合法值∈[1,10]
     * 输出: 整形值
     *      rt=0---写入成功
     *      rt<0---错误码
     */
    int writeFaceFeature(String featureData, int faceId);

    /**
     * @brief 匹配人脸特征值
     * 输入: 人脸特征字符串、人脸ID
     *      人脸ID合法值∈[1,10]
     * 输出: 整形值
     *      rt=0---匹配成功
     *      rt=1---匹配失败
     *      rt<0---错误码
     */
    int matchFaceFeature(String featureData, int matchedFaceId);

    /**
     * @brief 识别人脸特征值归属
     * 输入: 人脸特征字符串
     * 输出: 整形值
     *      rt=0--------未识别到特征值归属
     *      rt∈[1,10]---识别到的到特征值归属用户ID
     *      rt<0--------错误码
     */
    int recognizeFaceFeature(String featureData);

    /**
     * @brief 识别人脸特征值归属
     * 输入: 用户ID
     *      ID=0时，删除所有
     *      ID∈[1,10]时，对应用户ID的所有人脸特征值
     *      人脸ID合法值∈[1,10]
     * 输出: 整形值
     *      rt=0--------删除成功
     *      rt<0--------错误码
     */
    int clearUserFaceFeatures(int faceId);


    String listall();
}
